package avicit.bdp.dgs.qa.dao;

import avicit.bdp.common.base.BaseDAO;
import avicit.bdp.dgs.qa.dto.RuleDTO;
import avicit.bdp.dgs.qa.dto.RuleTemplateDTO;
import avicit.bdp.dgs.qa.dto.TemplateRelationDTO;
import com.github.pagehelper.Page;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @金航数码科技有限责任公司
 * @作者：developer
 * @邮箱：developer@avic-digital.com
 * @创建时间： 2023-03-15
 * @类说明：RuleTemplateDAO
 * @修改记录：
 * @注意事项：
 * @主要功能：规则模板DAO
 */
@Repository
public interface RuleTemplateDAO extends BaseDAO<RuleTemplateDTO> {
    /**
     * 分页查询-根据条件查询模板列表
     *
     * @param templateType
     * @param ruleType
     * @param ruleDimension
     * @param keyWords
     * @return
     */
    Page<RuleTemplateDTO> queryRuleTmplByCond(@Param("measureType") Integer measureType,
                                              @Param("templateType") Integer templateType,
                                              @Param("ruleType") Integer ruleType,
                                              @Param("ruleDimension") Integer ruleDimension,
                                              @Param("keyWords") String keyWords,
                                              @Param("wordSecretList") List<String> wordSecretList);

    /**
     * 查看详情
     *
     * @param id
     * @return
     */
    RuleTemplateDTO getRuleTmplDetail(@Param("id") String id);

    /**
     * 删除/批量删除规则模板
     *
     * @param idList
     * @return
     */
    int deleteRuleTmplByCond(@Param("idList") List<String> idList);

    /**
     * 模板名字是否重复
     *
     * @param name
     * @param measureType
     * @return
     * @@param id
     */
    long selectNameCount(@Param("id") String id, @Param("name") String name, @Param("measureType") Integer measureType);

    /**
     * 分页查询-查询指定规则模板的引用关系
     *
     * @param templateId
     * @return
     */
    Page<TemplateRelationDTO> queryRuleTmplRel(@Param("templateId") String templateId);

    /**
     * 统计模板数目
     *
     * @param startTime
     * @param endTime
     * @return
     */
    long countTemplate(@Param("startTime") String startTime,
                       @Param("endTime") String endTime,
                       @Param("wordSecretList") List<String> wordSecretList);

    /**
     * 获取文件校验内置模板
     *
     * @return
     */
    List<RuleTemplateDTO> getFileTemplateList();
}
